{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#####From chap6 Probability of DSScratch\n",
    "from collections import Counter\n",
    "import math, random\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def random_kid():\n",
    "    return random.choice([\"boy\", \"girl\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def uniform_pdf(x):\n",
    "    return 1 if x >= 0 and x < 1 else 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def uniform_cdf(x):\n",
    "    \"returns the probability that a uniform random variable is less than x\"\n",
    "    if x < 0:   return 0    # uniform random is never less than 0\n",
    "    elif x < 1: return x    # e.g. P(X < 0.4) = 0.4\n",
    "    else:       return 1    # uniform random is always less than 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def normal_pdf(x, mu=0, sigma=1):\n",
    "    sqrt_two_pi = math.sqrt(2 * math.pi)\n",
    "    return (math.exp(-(x-mu) ** 2 / 2 / sigma ** 2) / (sqrt_two_pi * sigma))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def plot_normal_pdfs(plt):\n",
    "    xs = [x / 10.0 for x in range(-50, 50)]\n",
    "    plt.plot(xs,[normal_pdf(x,sigma=1) for x in xs],'-',label='mu=0,sigma=1')\n",
    "    plt.plot(xs,[normal_pdf(x,sigma=2) for x in xs],'--',label='mu=0,sigma=2')\n",
    "    plt.plot(xs,[normal_pdf(x,sigma=0.5) for x in xs],':',label='mu=0,sigma=0.5')\n",
    "    plt.plot(xs,[normal_pdf(x,mu=-1)   for x in xs],'-.',label='mu=-1,sigma=1')\n",
    "    plt.legend()\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f54c70ed710>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_normal_pdfs(plt)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def normal_cdf(x, mu=0,sigma=1):\n",
    "    return (1 + math.erf((x - mu) / math.sqrt(2) / sigma)) / 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def plot_normal_cdfs(plt):\n",
    "    xs = [x / 10.0 for x in range(-50, 50)]\n",
    "    plt.plot(xs,[normal_cdf(x,sigma=1) for x in xs],'-',label='mu=0,sigma=1')\n",
    "    plt.plot(xs,[normal_cdf(x,sigma=2) for x in xs],'--',label='mu=0,sigma=2')\n",
    "    plt.plot(xs,[normal_cdf(x,sigma=0.5) for x in xs],':',label='mu=0,sigma=0.5')\n",
    "    plt.plot(xs,[normal_cdf(x,mu=-1) for x in xs],'-.',label='mu=-1,sigma=1')\n",
    "    plt.legend(loc=4) # bottom right\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f54c501fda0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_normal_cdfs(plt)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def inverse_normal_cdf(p, mu=0, sigma=1, tolerance=0.00001):\n",
    "    \"\"\"find approximate inverse using binary search\"\"\"\n",
    "\n",
    "    # if not standard, compute standard and rescale\n",
    "    if mu != 0 or sigma != 1:\n",
    "        return mu + sigma * inverse_normal_cdf(p, tolerance=tolerance)\n",
    "\n",
    "    low_z, low_p = -10.0, 0            # normal_cdf(-10) is (very close to) 0\n",
    "    hi_z,  hi_p  =  10.0, 1            # normal_cdf(10)  is (very close to) 1\n",
    "    while hi_z - low_z > tolerance:\n",
    "        mid_z = (low_z + hi_z) / 2     # consider the midpoint\n",
    "        mid_p = normal_cdf(mid_z)      # and the cdf's value there\n",
    "        if mid_p < p:\n",
    "            # midpoint is still too low, search above it\n",
    "            low_z, low_p = mid_z, mid_p\n",
    "        elif mid_p > p:\n",
    "            # midpoint is still too high, search below it\n",
    "            hi_z, hi_p = mid_z, mid_p\n",
    "        else:\n",
    "            break\n",
    "\n",
    "    return mid_z"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def bernoulli_trial(p):\n",
    "    return 1 if random.random() < p else 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def binomial(p, n):\n",
    "    return sum(bernoulli_trial(p) for _ in range(n))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def make_hist(p, n, num_points):\n",
    "\n",
    "    data = [binomial(p, n) for _ in range(num_points)]\n",
    "\n",
    "    # use a bar chart to show the actual binomial samples\n",
    "    histogram = Counter(data)\n",
    "    plt.bar([x - 0.4 for x in histogram.keys()],\n",
    "            [v / num_points for v in histogram.values()],\n",
    "            0.8,\n",
    "            color='0.75')\n",
    "\n",
    "    mu = p * n\n",
    "    sigma = math.sqrt(n * p * (1 - p))\n",
    "\n",
    "    # use a line chart to show the normal approximation\n",
    "    xs = range(min(data), max(data) + 1)\n",
    "    ys = [normal_cdf(i + 0.5, mu, sigma) - normal_cdf(i - 0.5, mu, sigma)\n",
    "          for i in xs]\n",
    "    plt.plot(xs,ys)\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nSR5ACF4AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f54c4ff0940>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "make_hist(0.75,100,10000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "P(both | older): 0.5007089325501317\n",
      "P(both | either):  0.3311897106109325\n"
     ]
    }
   ],
   "source": [
    "if __name__ == \"__main__\":\n",
    "\n",
    "    #\n",
    "    # CONDITIONAL PROBABILITY\n",
    "    #\n",
    "\n",
    "    both_girls = 0\n",
    "    older_girl = 0\n",
    "    either_girl = 0\n",
    "\n",
    "    random.seed(0)\n",
    "    for _ in range(10000):\n",
    "        younger = random_kid()\n",
    "        older = random_kid()\n",
    "        if older == \"girl\":\n",
    "            older_girl += 1\n",
    "        if older == \"girl\" and younger == \"girl\":\n",
    "            both_girls += 1\n",
    "        if older == \"girl\" or younger == \"girl\":\n",
    "            either_girl += 1\n",
    "\n",
    "    print(\"P(both | older):\", both_girls / older_girl)      # 0.514 ~ 1/2\n",
    "    print(\"P(both | either): \", both_girls / either_girl)   # 0.342 ~ 1/3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
